A collaborative editor is a software application that allows several people using different computers to edit a computer file. Collaborative editors include both real-time and non-real-time editors. Real-time collaborative editors allow users to edit the same file at the same time. A challenge encountered in providing real-time collaborative editing is the coordination of edits from remote users. These remote edits may conflict with the user's own local edits and are originally created in versions of the file that never existed locally.
Another challenge with collaborative editors is to reduce or minimize the network traffic attributed to edit updates sent to the other computers involved with the collaborative editing. This is a particular challenge for real-time collaborative editors that broadcast their updates to all the other computers. For example, Nbrain, Inc. has implemented a real-time collaborative editor which uses a broadcast-based update of the files, in which all computers broadcast their changes to all other computers. These broadcasts are collated by each local copy of the real-time collaborative editor and the files are kept synchronized across all the computers. Though this architecture may work for a small number of users, it will not scale well for medium to large number of users because the number of transmissions required by this architecture is an order of n*n where ‘n’ is the number of computers involved in the real-time collaborative editing. Current real-time collaborative editors are tied to a particular file type for editing (for example, the editors can edit only text files).